package cn.iocoder.yudao.module.infra.dal.mysql.face;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.infra.controller.admin.face.vo.FaceRecordPageReqVO;
import cn.iocoder.yudao.module.infra.dal.dataobject.face.FaceRecordDO;
import org.apache.ibatis.annotations.Mapper;

/**
 * 人脸记录 Mapper
 *
 * @author 芋道源码
 */
@Mapper
public interface FaceRecordMapper extends BaseMapperX<FaceRecordDO> {

    /**
     * 根据用户ID查询人脸记录
     *
     * @param userId 用户ID
     * @return 人脸记录
     */
    default FaceRecordDO selectByUserId(Long userId) {
        return selectOne("user_id", userId);
    }

    /**
     * 根据人脸标识查询人脸记录
     *
     * @param faceToken 人脸标识
     * @return 人脸记录
     */
    default FaceRecordDO selectByFaceToken(String faceToken) {
        return selectOne("face_token", faceToken);
    }

    /**
     * 分页查询人脸记录
     *
     * @param reqVO 分页查询条件
     * @return 分页结果
     */
    default PageResult<FaceRecordDO> selectPage(FaceRecordPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<FaceRecordDO>()
                .eqIfPresent(FaceRecordDO::getUserId, reqVO.getUserId())
                .eqIfPresent(FaceRecordDO::getGroupId, reqVO.getGroupId())
                .eqIfPresent(FaceRecordDO::getEnabled, reqVO.getEnabled())
                .betweenIfPresent(FaceRecordDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(FaceRecordDO::getId));
    }

}